import book.BookList;
import user.AdminUser;
import user.NormalUser;
import user.User;  //必须有User调用，不然login返回值不能是User

import java.util.Scanner;

public class Main {
    public static User login() {
        System.out.println("请输入你的名字:>");
        Scanner scanner = new Scanner(System.in);
        String userName = scanner.nextLine();

        System.out.println("请输入你的身份: 1、管理员   2、普通用户:>");
        int choice = scanner.nextInt();

        //确保输入1或者2
        while (choice !=1 && choice!=2) {
            System.out.println("输入错误，请重新输入！");
            System.out.println("请输入你的身份: 1、管理员   2、普通用户:>");
            choice = scanner.nextInt();
        }
        //1、返回new的对象
        //2、new的时候初始化对象的name
        //3、用User类型对象接收new的对象，发生向上转型
        if(choice==1) {
            return new AdminUser(userName);
        } else { //choice==2
            return new NormalUser(userName);
        }
    }

    public static void test() {
        //0、准备书架  ,初始化放三本书
        BookList bookList = new BookList();


        //1、登录
        User user = login(); //用User类型对象接收AdminUser或NormalUser类型的对象，发生向上转型

        while(true){
            //2、打印菜单并返回选择
            int choice = user.menu();//发生多态(还有动态绑定)

            //3、调用整合操作方法，进行操作
            user.doOperations(choice,bookList);
        }

    }
    public static void main(String[] args) {
        test();
    }
}
